package com.study.collection.set;

/**
 * TreeSet时SortedSet接口的实现类，TreeSet可以保证元素处于排序状态，它采用红黑树的数据结构来存储集合元素。
 * TreeSet支持两种排序方法：自然排序和定制排序，默认采用自然排序。
 * ♦ 自然排序
 *
 * 　　TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素的大小关系，然后将元素按照升序排列，这就是自然排序。如果试图将一个对象添加到TreeSet集合中，则该对象必须实现Comparable接口，否则会抛出异常。当一个对象调用方法与另一个对象比较时，例如obj1.compareTo(obj2)，如果该方法返回0，则两个对象相等；如果返回一个正数，则obj1大于obj2；如果返回一个负数，则obj1小于obj2。
 *
 * 　　Java常用类中已经实现了Comparable接口的类有以下几个：
 *
 * 　　♦ BigDecimal、BigDecimal以及所有数值型对应的包装类：按照它们对应的数值大小进行比较。
 *
 * 　　♦ Charchter：按照字符的unicode值进行比较。
 *
 * 　　♦ Boolean：true对应的包装类实例大于false对应的包装类实例。
 *
 * 　　♦ String：按照字符串中的字符的unicode值进行比较。
 *
 * 　　♦ Date、Time：后面的时间、日期比前面的时间、日期大。
 *
 * 　　对于TreeSet集合而言，它判断两个对象是否相等的标准是：两个对象通过compareTo(Object obj)方法比较是否返回0，如果返回0则相等。
 *
 * ♦ 定制排序
 *
 * 　　想要实现定制排序，需要在创建TreeSet集合对象时，提供一个Comparator对象与该TreeSet集合关联，由Comparator对象负责集合元素的排序逻辑。
 *
 * 　　综上：自然排序实现的是Comparable接口，定制排序实现的是Comparator接口。（具体代码实现会在后续章节中讲解）
 */
public class TreeSetTest {
}
